#include <iostream>
#include <string>

using namespace std;

/*
 *  short       短整型      2字节
 *  int         整型       4字节
 *  long        长整型     windows为4字节，linux为4字节(32位)，8字节(64位)
 *  longlong    长长整型   8字节
 *
 *  float       单精度     4字节
 *  double      双精度     8字节
 *  默认情况下，小数输出会有6位有效数字
 *
 *  char        字符型     1字节
 *
 *  string      字符串
 *
 *  bool        布尔型     1字节
 */

int main() {
    short a = 1;
    int b = 2;
    long c = 3;
    long long d = 4;
    cout << "short 类型占据空间：" << sizeof(a) << endl;
    cout << "int 类型占据空间：" << sizeof(b) << endl;
    cout << "long 类型占据空间：" << sizeof(c) << endl;
    cout << "long long 类型占据空间：" << sizeof(d) << endl;

    float e = 5.1f;
    double f = 6.0;
    cout << "float 类型占据空间：" << sizeof(e) << endl;
    cout << "double 类型占据空间：" << sizeof(f) << endl;

    char g = 'a';  // 字符型是将字符对应的ASCII码值放入到储存单元，字符是单引号
    cout << "char 类型占据空间：" << sizeof(g) << endl;
    cout << "char 类型对应的ASCII值：a="<< int(g) << endl;

    // 两种不同风格的字符串
    char h[] = "hello, world1";
    string i = "hello, world2";
    cout << "字符串 类型占据空间：" << sizeof(h) << endl;
    cout << "字符串 类型占据空间：" << i.size() << endl;

    bool j = true;  // 非0均为真
    cout << "bool 类型占据空间：" << sizeof(j) << endl;

    int k;
    cout << "输入一个int数：" << endl;
    cin >> k;
    cout << "输入的数为：" << k << endl;

    return 0;
}
